home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 34.zip / BS1 part 34 / GFA basic training.adf / Sound / DIGISPIELEN+AENDERN.LST < prev    next >
File List  |  1989-06-01  |  2KB  |  68 lines

  1. ' Laden und Wiedergabe von digitalen-Schwingungen
  2. ' mit Veränderung
  3. @lesen
  4. @einschalten
  5. @Ändern
  6. @ausschalten
  7. END
  8. '
  9. > PROCEDURE lesen
  10.   FILESELECT "Sample laden","Laden",":",sample$
  11.   IF sample$="" OR RIGHT$(sample$)=":"
  12.     PRINT "Kein Sample laden!"
  13.     END
  14.   ENDIF
  15.   OPEN "I",#1,sample$
  16.   laenge&=LOF(#1)
  17.   CLOSE #1
  18.   IF laenge&>65000
  19.     PRINT "Sampledatei zu lang"
  20.     END
  21.   ENDIF
  22.   speicheradr%=MALLOC(laenge&,&H2)
  23.   IF speicheradr%=0
  24.     PRINT "Speicher kann nicht reserviert werden!"
  25.     END
  26.   ENDIF
  27.   PRINT "Name:    ";sample$
  28.   PRINT "Groesse: ";laenge&
  29.   PRINT "Adresse: ";HEX$(speicheradr%)
  30.   BLOAD sample$,speicheradr%
  31. RETURN
  32. > PROCEDURE einschalten
  33.   ' Wiedergabe auf Kanal 0
  34.   DPOKE &HDFF096,1
  35.   LONG{&HDFF0A0}=speicheradr%
  36.   DPOKE &HDFF0A4,INT(laenge&/2)
  37.   DPOKE &HDFF0A6,100
  38.   DPOKE &HDFF0A8,64
  39.   DPOKE &HDFF096,&H8201
  40. RETURN
  41. > PROCEDURE ausschalten
  42.   ' Wiedergabe aus
  43.   DPOKE &HDFF096,1
  44.   frei%=MFREE(speicheradr%,laenge&)
  45.   PRINT
  46.   PRINT "Frei:";frei%
  47. RETURN
  48. PROCEDURE Ändern
  49.   REPEAT
  50.     WHILE MOUSEK=1              ! Links gedrückt ?
  51.       IF sper&<=65535           ! Maximum erreicht ?
  52.         INC sper&               ! Sample-Period erhöhen
  53.       ENDIF
  54.       DPOKE &HDFF0A6,sper&      ! Neuen Wert übernehmen
  55.     WEND
  56.     '
  57.     WHILE MOUSEK=2              ! Rechts gedrückt ?
  58.       IF sper&>124              ! Minimum erreicht ?
  59.         DEC sper&               ! Sample-Period erniedrigen
  60.       ENDIF
  61.       DPOKE &HDFF0A6,sper&      ! Neuen Wert übergeben
  62.     WEND
  63.     '
  64.     ' Ausgabe der aktuellen Sample-Period
  65.     PRINT AT(1,10);USING "#####",sper&," :Sample Period:"
  66.   UNTIL MOUSEK=3                ! Exit, wenn beide gedrückt sind
  67. RETURN
  68.